package com.cskaoyan.javase.homework.day09.extend;

/**
 * 自身类中的成员变量，不允许作为this或者super调用其它构造器的参数
 *
 * 原因在于:
 *      1.如果语法允许,这时成员变量最多具有默认值
 *          这种参数没有意义
 *      2.语法规定,在父类构造器执行前,不能够使用子类的成员变量作为赋值.
 *
 * 当然自身类中的变量是可以做参数的,这个变量是静态成员变量,因为它在类加载时期就能完成赋值
 *
 * 使用自身的静态成员变量,作为构造器的参数是很常见的.
 *
 * @since 22:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
class Person {
    int a;

    public Person() {
    }

    public Person(int a) {
        this.a = a;
    }
}

class Student extends Person {
    int age;
    String name;
    static int var = 10;

    public Student(int age) {
        this.age = age;
    }

    public Student(String name) {
        // Cannot reference 'Student.var' before supertype constructor has been called
        this(var);
        this.name = name;
    }

    public Student() {
        // super(var);
    }
}